import java.util.*;

class Solution {
    public int[] intersection(int[] nums1, int[] nums2) {
//        int[] re = new int[0];
        List<Integer> ret = new ArrayList<>();

        Map<Integer,Integer> numsMap1 = new HashMap<>();

        for (int i : nums1) {
            numsMap1.put(i, numsMap1.getOrDefault(i, 0));
        }

        Map<Integer, Integer> numsMap2 = new HashMap<>();
        for (int i : nums2) {
            numsMap2.put(i, numsMap2.getOrDefault(i, 0));
        }

        for (int i : numsMap1.keySet()) {
            if (numsMap2.containsKey(i)) {
//                re = Arrays.copyOf(re,re.length+1);
//                re[re.length - 1] = i;
                ret.add(i);
            }
        }

//        return re;
        return ret.stream().mapToInt(x -> x).toArray();
    }
}